/**
 * @brief 日志汇报模块。定时收集需要汇报的信息，然后将数据发送给服务器
 * @version 1.0
 * @date 2018-3-21
 * @author 宋炜
 */
#ifndef __REPORTER_HPP__
#define __REPORTER_HPP__

#include <atomic>
#include <string>
#include "../include/timer.hpp"

class reporter
{
public:
	enum err_code{
		OK = 0
	};
private:
	std::string           m_url;
	int                   m_port;
	
	// 对于设备的串号 ， ICCID 默认必须上报
	std::atomic< bool >   m_loc;    // 上报位置
	std::atomic< bool >   m_socka;  // socket a
	std::atomic< bool >   m_sockb;  // socket b
	std::atomic< bool >   m_sockc;  // socket c
	std::atomic< bool >   m_sockd;  // socket d
	std::atomic< bool >   m_net;    // 网络
	std::atomic< bool >   m_radio;  // 信号
     
	CTimer   m_timer;               // 定时上报的计时器
public:
	reporter();
	virtual ~reporter();
	/**
	 * @brief 执行上报操作。第一调用后启动计时器，此后在计时器的回调函数中调用
	 *        按照预先设定的间隔上报数据
	 */
	void run();
private:
	/**
	 * @brief 收集日志信息
	 */
	void collect();
	
};
#endif

